﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.Text;

using Banesco.Logica;
using Banesco.Entidades;

namespace WebCliente.UserControls
{
    public partial class ucHistorialCreditoAPC : System.Web.UI.UserControl
    {
        string identificacionCliente = string.Empty;
        [Browsable(true)]
        public String IdentificacionCliente
        {
            get { return identificacionCliente; }
            set { identificacionCliente = value; }
        }

        [Browsable(true)]
        public enum TipoIdentificacionCliente
        {
            Cedula,
            Juridico,
            Pasaporte,
        }

        TipoIdentificacionCliente set;

        [Browsable(true)]
        public TipoIdentificacionCliente TipoDeIdentificacionCliente
        {
            get { return set; }
            set { set = value; }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                EstablecerInformacionCliente();
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            HelperWSAPCServices apcServicesHelper = new HelperWSAPCServices();

            string resultadoConsulta = string.Empty;

            string cedula = txtIdentificación.Text;
            string tipoIdentificacion = ddlTipoIdentificación.SelectedItem.Value.ToString();
            string usuario = txtUsuario.Text;
            string password = txtPassword.Text;

            apcServicesHelper.APC_ObtenerInformacionCliente(ref resultadoConsulta, usuario, password, cedula, tipoIdentificacion);

            if (!String.IsNullOrEmpty(resultadoConsulta))
            {
                this.DIVLoginAPC.Visible = false;
                this.DIVInformacionAPC.Visible = true;
                resultadoConsulta = resultadoConsulta.Replace("&", "AND");
                TransformarInformacion(resultadoConsulta);

            }
            this.GuardarInformacionConsultaAPC(1, cedula, tipoIdentificacion, resultadoConsulta, usuario, DateTime.Now, DateTime.Now);

        }

        private void GuardarInformacionConsultaAPC(int IDUsuario, string IdentificacionCliente, string TipoIdentificacionCliente, string InformacionObtenida
           , string UsuarioAPCConsulta, DateTime FechaConsulta, DateTime FechaModificacion)
        {
            Mensaje retMensaje = new Mensaje();
            BSBanesco objBSB = new BSBanesco();
            try
            {
                retMensaje = objBSB.HistorialCreditoAPC_RegistrarInformacionConsulta(IDUsuario, IdentificacionCliente, TipoIdentificacionCliente, InformacionObtenida
           , UsuarioAPCConsulta, FechaConsulta, FechaModificacion);

            }
            catch { }
        }

        private void EstablecerInformacionCliente()
        {
            string tipoIdentificacion = string.Empty;
            try
            {
                if (Session[Constantes.SESIONUSUARIO] != null)
                {
                    int idSolicitud = ((UsuarioBase)Session[Constantes.SESIONUSUARIO]).IdSolicitud;
                    UsuarioBase objUsuario = (UsuarioBase)Session[Constantes.SESIONUSUARIO];

                    BSBanesco objBSB = new BSBanesco();
                    objBSB.ObtenerDatosCliente(ref objUsuario);

                    if (objUsuario != null)
                    {
                        txtIdentificación.Text = objUsuario.Identificacion;
                        tipoIdentificacion = objUsuario.TipoIdentificacion;

                        ddlTipoIdentificación.ClearSelection();
                        if (String.Equals(tipoIdentificacion, "CED"))
                            ddlTipoIdentificación.Items.FindByValue("1").Selected = true;
                        if ((String.Equals(tipoIdentificacion, "RIF")) || (String.Equals(tipoIdentificacion, "RSE")) || (String.Equals(tipoIdentificacion, "RUC")))
                            ddlTipoIdentificación.Items.FindByValue("2").Selected = true;
                        if (String.Equals(tipoIdentificacion, "PAS"))
                            ddlTipoIdentificación.Items.FindByValue("3").Selected = true;

                    }

                }
            }
            catch
            { }
        }

        public int ObtenerTipoDeIdentificacion()
        {
            int tipoDeIdentificacion = 0;

            if (TipoDeIdentificacionCliente == TipoIdentificacionCliente.Cedula)
                tipoDeIdentificacion = 1;
            if (TipoDeIdentificacionCliente == TipoIdentificacionCliente.Juridico)
                tipoDeIdentificacion = 2;
            if (TipoDeIdentificacionCliente == TipoIdentificacionCliente.Pasaporte)
                tipoDeIdentificacion = 3;

            return tipoDeIdentificacion;
        }

        private void TransformarInformacion(string informacion)
        {
            //StringReader objReader = new StringReader(informacion);
            //XPathDocument objDoc = new XPathDocument(objReader);

            //string objXSLTPath = ConfigurationManager.AppSettings["XSLTHistorialCreditoAPCPath"].ToString(); 

            //XslTransform myXslTrans = new XslTransform() ;
            //myXslTrans.Load(objXSLTPath);

            //XmlTextWriter myWriter = new XmlTextWriter("result.html", null);
            //myXslTrans.Transform(objDoc, null, myWriter);

            //Literal1.Text = myWriter.ToString();

            //myWriter.Close();

            try
            {
                string strXSLTFile = ConfigurationManager.AppSettings["XSLTHistorialCreditoAPCPath"].ToString(); ;



                StringReader stringReader = new StringReader(informacion);

                XmlReader reader = XmlReader.Create(stringReader, null);



                XslCompiledTransform objXSLTransform = new XslCompiledTransform();

                objXSLTransform.Load(strXSLTFile);


                StringBuilder htmlOutput = new StringBuilder();

                TextWriter htmlWriter = new StringWriter(htmlOutput);

                objXSLTransform.Transform(reader, null, htmlWriter);

                Literal1.Text = htmlOutput.ToString();

                reader.Close();
            }
            catch
            { }


        }

        protected void btnNuevaBusqueda_Click(object sender, EventArgs e)
        {

            this.DIVLoginAPC.Visible = true;
            this.DIVInformacionAPC.Visible = false;
            txtUsuario.Text = string.Empty;
            txtIdentificación.Text = string.Empty;
            txtPassword.Text = string.Empty;
            ddlTipoIdentificación.ClearSelection();

        }
    }
}